#练习题1-23

#1、编写一个程序，找到2000至3200（包含）中所有可被7整除但
#不能被5整除的所有数字，得到的数字按逗号分隔，打印在一行上。
l = []
for i in range(2000,3201):
    if (i%7 ==0)and(i%5 != 0):
        l.append(str(i))
print(','.join(l))
print('--------------------------------------------------------------------------------')
print('\n')


#2、编写一个可以计算给定数阶乘的程序，结果以逗号分隔，打印在一行上
def factor(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n*factor(n-1)
n = int(input('2、请输入一个正整数：'))
result = [str(factor(i))for i in range(1,n+1)]
print(','.join(result))
print('--------------------------------------------------------------------------------')
print('\n')


#3、使用给定的整数n，编写程序生成一个包含（i,ixi）的字典，该
#字典包含从1到n之间的整数（两者都包含），然后打印字典，假设
#向程序提供一下输入：8则输出为：{1:1,2:4,3:9,4:16,5:25,6:36,7:49,8:64}
print('3、请输入一个数字：')
n=int(input())
d=dict()
for i in range(1,n+1):
    d[i]=i*i
print(d)
print('--------------------------------------------------------------------------------')
print('\n')


#4、编写一个程序，该程序接收控制台以逗号分隔的数字序列，并生成包含
#每个数字的列表和元组，假设向程序提供一下输入：34岁，67年，55岁
#，33岁，12日，98年；则输出为['34','67','55','33','12','98']
#('34','67','55','33','12','98')
import re                      #引入正则表达式模块
print('4、请输入一组数字：')
values = input()
l = values.split(',')
k = re.findall(r'[0-9]+',values)
t = tuple(k)
print(k)
print(t)
print('--------------------------------------------------------------------------------')
print('\n')


#5、定义一个至少有两个方法的类：一、getString:从控制台输入获取
#字符串；二、printString:打印大写字母的字符串，并写出简单的测试
#函数来测试类方法。
class InputOutString(object):
    def __init__(self):
        self.s = ''
    def getString(self):
        print('5、请输入一些小写的英文字母或单词：')
        self.s = input()
    def printString(self):
        print(self.s.upper())
strObj=InputOutString()
strObj.getString()
strObj.printString()
print('--------------------------------------------------------------------------------')
print('\n')


#6、编写一个程序，根据给定的公式计算并打印值，其中假设C=50，
#H=30,D是一个变量，它的值应该以逗号分隔的序列输入到程序中。
#例：程序的输入序列为（以逗号分隔）：100,150,180;则程序输出
#18,22,24    (公式是：[2*C*D/H]开根)
import math
c=50
h=30
value=[]
print('6、请输入一组数字：')
items=[x for x in input().split(',')]
for d in items:
    value.append(str(int(round(math.sqrt(2*c*float(d)/h)))))
print(','.join(value))
print('--------------------------------------------------------------------------------')
print('\n')


#7、编写一个程序，X,Y作为输入，生成一个二维数组，数组的第i行和
#第j列的元素值应该是ixj。注意：i= 0,1,……X-1  ；j=0,1……Y-1。
#假设程序输入3,5；则程序输出为：[[0,0,0,0,0],[0,1,2,3,4],[0,2,4,6,8]]
print('7、请输入两个数字：')
input_str=input()
dimensions=[int(x)for x in input_str.split(',')]
rowNum=dimensions[0]
colnum=dimensions[1]
multilist=[[0 for col in range(colnum)] for row in range(rowNum)]
for row in range(rowNum):
    for col in range(colnum):
        multilist[row][col]=row*col
print(multilist)
print('--------------------------------------------------------------------------------')
print('\n')

#8、编写一个程序，以逗号分隔的单词序列作为输入，按照字母顺序对每个单词进行
#排序，并通过逗号分隔的序列赖打印单词。假设向程序输入：without,hello,bag,
#world；则输出为：bag,hello,without,world
print('8、请输入几个以逗号分开的英文单词：')
items01=[x for x in input().split(',')]
items01.sort()
print(','.join(items01))
print('--------------------------------------------------------------------------------')
print('\n')


#9、编写一个程序，接收一行序列作为输入，并在将句子中的所有字符大写后打印行。
'''
print('9、请输入一行序列：')
list1 = str(input())
list1 = list[list1.upper()]
print(list1)
'''
print('9、请输入一些小写字母或句子：')
lines=[]
while True:
    s=input()
    if s:
        lines.append(s.upper())
    else:
        break;
    for s1 in lines:
        print(s1)
    break      
print('--------------------------------------------------------------------------------')
print('\n')


#10、编写一个程序，以一些列空格分隔的单词作为输入，并在删除所有重复的单词
#后，按字母顺序排序后打印这些单词。假设向程序输入：
#hello world and practice makes perfect and hello world again.
print('10、请输入一组英文单词：')
s2=input()
words=[word for word in s2.split(" ")]
print(" ".join(sorted(list(set(words)))))
print('--------------------------------------------------------------------------------')

